03. 克隆现有仓库

为何要克隆?

首先,什么是克隆?

制作完全相同的副本

制作完全相同的副本有什么意义,这与 Git 和版本控制有何关系?

你为何要创建一个完全相同的副本?当我在创建新的 Web 项目时,我会执行以下步骤:

  • 创建一个 index.html 文件

  • 创建一个 js 目录

  • 创建一个 css 目录

  • 创建一个 img 目录

  • 在 css 目录下创建 app.css

  • 在 js 目录下创建 app.js

  • index.html 中添加起始 HTML 代码

  • 为代码检查添加配置文件(验证代码语法)

  • HTML 代码检查

  • CSS 代码检查

  • JavaScript 代码检查

  • 配置我的代码编辑器

    …每次新建一个项目,我都执行这些步骤!其实花费了很多精力,我不想不断重复执行同一步骤,因此我最后一次执行了上述列出的所有步骤,并为我自己创建了一个起始项目。现在,当我新建项目时,我只需制作一个与起始项目完全相同的副本!

在 Git 上进行克隆的方法是调用我们将在终端上运行的命令 git clone ,然后传入要克隆的 Git 仓库的路径(通常是 URL)。

想要尝试克隆一个现有的项目?我们来看看如何使用 Git 的 clone 命令!

验证终端位置

提示:在克隆任何内容之前,确保命令行工具已定位于正确的目录下。克隆项目会新建一个目录,并将克隆的 Git 仓库放在其中。问题是无法创建嵌套的 Git 仓库。因此,确保终端的当前工作目录没有位于 Git 仓库中。如果当前工作目录没有在 shell 的提示符中显示,输入 pwd 输出工作目录。

克隆 blog 仓库

准备好了?我们开始克隆吧!

输入命令 git clone ,然后输入你要克隆的 Git 仓库的路径。我们将在这门课程中一直使用的项目位于以下 URL 上: https://github.com/udacity/course-git-blog-project 。因此,使用该 URL 克隆 Blog 项目的完整命令是:

$ git clone https://github.com/udacity/course-git-blog-project

温馨提醒: 复制上述代码时,记得去掉 $

_`git clone` 命令被用于将 blog 项目仓库复制到当前目录的 `course-git-blog-project` 文件夹中。_

git clone 命令被用于将 blog 项目仓库复制到当前目录的 course-git-blog-project 文件夹中。

git clone 输出结果的简要说明

我们简要地介绍下 git clone 显示的输出结果。

第一行是"Cloning into 'course-git-blog-project'…"。Git 正在创建一个目录(名称与我们要克隆的项目一样),并将仓库放在其中…很酷!

其余输出结果基本都是验证信息——也就是统计远程仓库的项目数,然后压缩并接收这些项目,并解压。

克隆项目并使用不同的名称

你刚刚克隆了本课程的 blog 项目。很棒!

你在终端中运行的命令是:

$ git clone https://github.com/udacity/course-git-blog-project
      

…它创建了一个叫做 course-git-blog-project 的目录

如果你想使用除默认名外的其他名称呢?没问题,只需运行上述命令并在 Finder/Windows Explorer 中手动重命名或在终端上使用 mv 重命名即可。但是步骤还是太多了!我们希望一次性地克隆项目并使用不同的名称,如何实现呢?

克隆项目并使用不同的名称

请参阅 git clone 文档 - 英 | 并从以下选项中选择正确的答案。命令应该克隆 blog 项目仓库并将其存储在叫做 blog-project 的目录下。

SOLUTION: git clone https://github.com/udacity/course-git-blog-project blog-project

不在 Git 仓库中?

警告:当你第一次使用 Git 时,经常会忽略一个非常重要的步骤。在使用 git clone 命令克隆仓库时,它会为仓库新建一个目录…你已经知道这一点。但是,它不会改变 shell 的工作目录。它会在当前工作目录下创建新的仓库,意味着当前工作目录依然不在这个新的 Git 仓库里!确保使用 cd 命令切换到新的仓库中。

注意,根据终端的提示符进行判断,如果你位于 Git 仓库目录下,提示符将包含一个用小括号括起来的名称。

_Mac 的终端应用。终端显示了起始目录。_

Mac 的终端应用。终端显示了起始目录。

_Mac 的终端应用。终端使用 `cd` 命令从基础目录转移到 Git 仓库 course-git-blog-project 下。_

Mac 的终端应用。终端使用 cd 命令从基础目录转移到 Git 仓库 course-git-blog-project 下。

查看项目

你已经将项目克隆到计算机上,并使用 cd 转移到该项目中。是不是该在浏览器中查看下该项目的外观了?

在你喜欢的浏览器中打开 index.html 文件。

_在 Chrome 中打开的 blog 项目。_

在 Chrome 中打开的 blog 项目。

git clone 小结

git clone 命令用于创建一个与现有仓库完全相同的副本。

$ git clone <path-to-repository-to-clone>

该命令:

  • 会获取现有仓库的路径

  • 默认地将创建一个与被克隆的仓库名称相同的目录

  • 可以提供第二个参数,作为该目录的名称

  • 将在现有工作目录下创建一个新的仓库

实用链接

状态更新

到目前为止,我们已经有了两个 Git 仓库:

  • 使用 git init 命令创建的空仓库
  • 使用 git clone 命令克隆的仓库

如何查找关于这些仓库的任何信息?Git 在管理着它们,但是如何了解 Git 知道多少关于这些仓库的信息?要了解仓库的状况,我们需要使用 git status 命令。知道 Git 仓库的状况非常重要,因此让我们进入下节内容:判断仓库的状态。